home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 7684 / 7684.xpi / chrome / firefm.jar / content / fmFeedListDialog.js < prev    next >
Text File  |  2009-06-02  |  4KB  |  134 lines

  1. /**
  2.  * Copyright (c) 2008, Jose Enrique Bolanos, Jorge Villalobos
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions are met:
  7.  *
  8.  *  * Redistributions of source code must retain the above copyright notice,
  9.  *    this list of conditions and the following disclaimer.
  10.  *  * Redistributions in binary form must reproduce the above copyright notice,
  11.  *    this list of conditions and the following disclaimer in the documentation
  12.  *    and/or other materials provided with the distribution.
  13.  *  * Neither the name of Jose Enrique Bolanos, Jorge Villalobos nor the names
  14.  *    of its contributors may be used to endorse or promote products derived
  15.  *    from this software without specific prior written permission.
  16.  *
  17.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  18.  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  19.  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  20.  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
  21.  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  22.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  23.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  24.  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  25.  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  26.  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  27.  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  28.  **/
  29.  
  30. Components.utils.import("resource://firefm/fmCommon.js");
  31. Components.utils.import("resource://firefm/fmFeeds.js");
  32.  
  33. /**
  34.  * FireFM chrome namespace. We need a separate one because this one is defined
  35.  * per window.
  36.  */
  37. if (typeof(FireFMChrome) == 'undefined') {
  38.   var FireFMChrome = {};
  39. };
  40.  
  41. /**
  42.  * Feed list dialog controller.
  43.  */
  44. FireFMChrome.FeedListDialog = {
  45.   /* Logger for this object. */
  46.   _logger : null,
  47.   /* The full feed list. */
  48.   _feed : null,
  49.  
  50.   /**
  51.    * Initializes the object.
  52.    */
  53.   init : function() {
  54.     let message;
  55.  
  56.     this._logger = FireFM.getLogger("FireFMChrome.FeedListDialog");
  57.     this._logger.debug("init");
  58.  
  59.     document.documentElement.getButton("accept").disabled = true;
  60.  
  61.     message = document.getElementById("message");
  62.     document.title = window.arguments[1];
  63.     message.value = window.arguments[2];
  64.     this._loadFeed(window.arguments[0]);
  65.     document.getElementById("feed-list").focus();
  66.   },
  67.  
  68.   /**
  69.    * Loads the feed into the list.
  70.    * @param aFeedType the type of feed to load.
  71.    */
  72.   _loadFeed : function(aFeedType) {
  73.     this._logger.trace("_loadFeed");
  74.  
  75.     let list = document.getElementById("feed-list");
  76.     let feedSize;
  77.     let listItem;
  78.     let image;
  79.     let itemName;
  80.  
  81.     this._feed = FireFM.Feeds.getFeed(aFeedType, -1);
  82.     feedSize = this._feed.length;
  83.  
  84.     for (let i = 0; i < feedSize; i++) {
  85.       listItem = document.createElement("richlistitem");
  86.       image = document.createElement("image");
  87.       image.setAttribute("class", "firefm-feed-image");
  88.       image.setAttribute("src", this._feed[i].imagePath);
  89.       itemName = document.createElement("label");
  90.       itemName.setAttribute("value", this._feed[i].name);
  91.       listItem.appendChild(image);
  92.       listItem.appendChild(itemName);
  93.       list.appendChild(listItem);
  94.     }
  95.   },
  96.  
  97.   /**
  98.    * Triggered when the user clicks on the accept button.
  99.    * @param aEvent the event that triggered this.
  100.    */
  101.   accept : function(aEvent) {
  102.     this._logger.debug("accept");
  103.  
  104.     let list = document.getElementById("feed-list");
  105.  
  106.     window.arguments[3].selected = this._feed[list.selectedIndex];
  107.   },
  108.  
  109.   /**
  110.    * Triggered when the user clicks on the cancel button.
  111.    * @param aEvent the event that triggered this.
  112.    */
  113.   cancel : function(aEvent) {
  114.     this._logger.debug("cancel");
  115.     window.arguments[3].selected = null;
  116.   },
  117.  
  118.   /**
  119.    * Triggered when the user clicks selects an item on the list.
  120.    * @param aEvent the event that triggered this.
  121.    */
  122.   onSelect : function(aEvent) {
  123.     this._logger.debug("onSelect");
  124.  
  125.     let list = document.getElementById("feed-list");
  126.  
  127.     document.documentElement.getButton("accept").disabled =
  128.       (0 > list.selectedIndex);
  129.   }
  130. };
  131.  
  132. window.addEventListener(
  133.   "load", function() { FireFMChrome.FeedListDialog.init(); }, false);
  134.